package 单例模式8月开始.饿汉式静态常量可用0819;
//饿汉式静态常量可用0819
//八种
// https://www.cnblogs.com/zhaoyan001/p/6365064.html

//五种
//https://mp.weixin.qq.com/s?__biz=MzIwMTY0NDU3Nw==&mid=2651938221&idx=1&sn=9cb29d1eb0fdbdb5f976306b08d5bdcc&chksm=8d0f32e3ba78bbf547c6039038682706a2eaf83002158c58060d5eb57bdd83eb966a1e223ef6&scene=21#wechat_redirect
  public  class Singleton {

        private final static Singleton INSTANCE = new Singleton();

        private Singleton(){}

        public static Singleton getInstance(){
            return INSTANCE;
        }
    }


/*
优点：这种写法比较简单，就是在类装载的时候就完成实例化。避免了线程同步问题。

缺点：在类装载的时候就完成实例化，没有达到Lazy Loading的效果。如果从始至终从未使用过这个实例，则会造成内存的浪费。

 */
/*
单例的实现主要是通过以下两个步骤：
1.将该类的构造方法定义为私有方法，这样其他处的代码就无法通过调用该类的构造方法来实例化该类的对象，
只有通过该类提供的静态方法来得到该类的唯一实例；
2.在该类内提供一个静态方法，当我们调用这个方法时，如果类持有的引用不为空就返回这个引用，
如果类保持的引用为空就创建该类的实例并将实例的引用赋予该类保持的引用。

 */